//专门处理路由权限的模块
import  {constantRoutes,asyncRoutes} from '@/router'

const state={
  routes:constantRoutes ,//路由表，表示当前用户所拥有的路由数组,一开始肯定有静态路由的地址
  points:null //功能权限点，按钮权限

}
const mutations={
  setRoutes(state,newRoutes){

    // 下面这么写不对 不是语法不对 是业务不对
    // state.routes = [...state.routes, ...newRoutes]
    // 应该是每次更新 都应该在静态路由的基础上进行追加
    state.routes = [...constantRoutes, ...newRoutes]

  },

  setPoints(state,points){
    state.points=points

  }


}
const  actions={
  /*
  * 第二个参数为当前用户所拥有的菜单权限
  * menus:['xxx','xxx']
  *  asyncRoutes是所有的动态路由
  *  asyncRoutes  [{path: 'setting',name: 'setting'},{}]
  * */
  filterRoutes(context,menus){
    const routes=[]

    menus.forEach(key=>{
      routes.push(... asyncRoutes.filter(item =>  item.name===key))

    })
    // 得到的routes是所有模块中满足权限要求的路由数组
    // routes就是当前用户所拥有的 动态路由的权限
    context.commit('setRoutes',routes)  // 将动态路由提交给mutations
    return routes // 这里为什么还要return  state数据 是用来 显示左侧菜单用的  return  是给路由addRoutes用的


  },

  points(context,points){

    context.commit('setPoints',points)
  }


}


export default  {
  namespaced: true,
  state,
  mutations,
  actions
}
